考点&知识点
备份文件泄露
ThinkPHP6 任意文件操作漏洞利用
解题过程
分析
打开是这个样,有登录、注册、搜索、个人中心这几个功能,各个功能黑盒测试了一遍,均没有发现sql注入,模板注入的漏洞。不过扫目录的时候,扫出来www.zip的文件
。
从得到的报错信息中得知使用的是php的tp6框架。
搜了下tp6的rce姿势。很多文章都提到了ThinkPHP6 任意文件操作漏洞。这个漏洞是在存储session时导致的文件写入,如果session可控的话就会照成任意文件操作或者任意文件删除的漏洞。
那这个漏洞要怎么利用呢?首先要找到可以控制session的地方。
在web\app\home\controller\Member.php
1 | public function search() |
在Member
类中找到 search方法,发现有两处可以通过外部传参设置session的值。
getshell
接下来注册一个账号,在登录时将cookie改成00000000000000000000000000000.php
总共32位。
然后再搜索框写入webshell
访问 /runtime/session/sess_0000000000000000000000000000.php
回显了123,说明已经写入,接下来蚁剑连接。插件绕过disable_functions,在根目录拿到flag。
总结
每一题都能学到新知识点,很不错。这道题跟着师傅们wp倒是做出来了,但是又很多原理性的知识点并没有看懂,代码审计的能力还是比较薄弱,尤其是当多个文件多个类来回看的时候,脑子就是浆糊了,现在就不深入研究了,后面来专门攻克,继续刷题。